#pragma once
#include"mprpcconfig.h"
#include"mprpcchannel.h"
#include"mprpccontroller.h"
//mprpc框架的初始化类，这里先使用单例模式来设计，因为它包含了一些整个框架锁共享的一些信息，如配置信息
//日志信息等，希望在框架其他地方使用的时候能以最简便的形式获取到框架的基础类共享的信息

//mprpc框架的基础类，负责框架的一些初始化的操作
class MprpcApplication
{
  public:
    static void Init(int argc,char** argv);//用于解析配置文件或启动参数。
    static MprpcApplication& GetInstance();
    static MprpcConfig& GetConfig();
   
    //单例类，意味着在整个程序中只能存在一个 MprpcApplication 实例。在初始化之前，这个实例还不存在。
    //所以为了能够访问到这个类的功能（比如获取唯一实例或进行初始化），必须通过 类名直接调用，而不能依赖于某个对象实例。
  private:
    static MprpcConfig m_config;
    MprpcApplication(){}
    MprpcApplication(const MprpcApplication&)=delete;//删除拷贝构造函数
    MprpcApplication(MprpcApplication&&)=delete;//删除移动构造函数
};